home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / shutil.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  5KB  |  230 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import os
  5. import sys
  6. import stat
  7. from os.path import abspath
  8. __all__ = [
  9.     'copyfileobj',
  10.     'copyfile',
  11.     'copymode',
  12.     'copystat',
  13.     'copy',
  14.     'copy2',
  15.     'copytree',
  16.     'move',
  17.     'rmtree',
  18.     'Error']
  19.  
  20. class Error(EnvironmentError):
  21.     pass
  22.  
  23.  
  24. try:
  25.     WindowsError
  26. except NameError:
  27.     WindowsError = None
  28.  
  29.  
  30. def copyfileobj(fsrc, fdst, length = 16384):
  31.     while None:
  32.         buf = fsrc.read(length)
  33.         if not buf:
  34.             break
  35.         
  36.         continue
  37.         return None
  38.  
  39.  
  40. def _samefile(src, dst):
  41.     if hasattr(os.path, 'samefile'):
  42.         
  43.         try:
  44.             return os.path.samefile(src, dst)
  45.         except OSError:
  46.             return False
  47.         except:
  48.             None<EXCEPTION MATCH>OSError
  49.         
  50.  
  51.     None<EXCEPTION MATCH>OSError
  52.     return os.path.normcase(os.path.abspath(src)) == os.path.normcase(os.path.abspath(dst))
  53.  
  54.  
  55. def copyfile(src, dst):
  56.     if _samefile(src, dst):
  57.         raise Error, '`%s` and `%s` are the same file' % (src, dst)
  58.     
  59.     fsrc = None
  60.     fdst = None
  61.     
  62.     try:
  63.         fsrc = open(src, 'rb')
  64.         fdst = open(dst, 'wb')
  65.         copyfileobj(fsrc, fdst)
  66.     finally:
  67.         if fdst:
  68.             fdst.close()
  69.         
  70.         if fsrc:
  71.             fsrc.close()
  72.         
  73.  
  74.  
  75.  
  76. def copymode(src, dst):
  77.     if hasattr(os, 'chmod'):
  78.         st = os.stat(src)
  79.         mode = stat.S_IMODE(st.st_mode)
  80.         os.chmod(dst, mode)
  81.     
  82.  
  83.  
  84. def copystat(src, dst):
  85.     st = os.stat(src)
  86.     mode = stat.S_IMODE(st.st_mode)
  87.     if hasattr(os, 'utime'):
  88.         os.utime(dst, (st.st_atime, st.st_mtime))
  89.     
  90.     if hasattr(os, 'chmod'):
  91.         os.chmod(dst, mode)
  92.     
  93.  
  94.  
  95. def copy(src, dst):
  96.     if os.path.isdir(dst):
  97.         dst = os.path.join(dst, os.path.basename(src))
  98.     
  99.     copyfile(src, dst)
  100.     copymode(src, dst)
  101.  
  102.  
  103. def copy2(src, dst):
  104.     if os.path.isdir(dst):
  105.         dst = os.path.join(dst, os.path.basename(src))
  106.     
  107.     copyfile(src, dst)
  108.     copystat(src, dst)
  109.  
  110.  
  111. def copytree(src, dst, symlinks = False):
  112.     names = os.listdir(src)
  113.     os.makedirs(dst)
  114.     errors = []
  115.     for name in names:
  116.         srcname = os.path.join(src, name)
  117.         dstname = os.path.join(dst, name)
  118.         
  119.         try:
  120.             if symlinks and os.path.islink(srcname):
  121.                 linkto = os.readlink(srcname)
  122.                 os.symlink(linkto, dstname)
  123.             elif os.path.isdir(srcname):
  124.                 copytree(srcname, dstname, symlinks)
  125.             else:
  126.                 copy2(srcname, dstname)
  127.         continue
  128.         except (IOError, os.error):
  129.             why = None
  130.             errors.append((srcname, dstname, str(why)))
  131.             continue
  132.             except Error:
  133.                 err = None
  134.                 errors.extend(err.args[0])
  135.                 continue
  136.             
  137.         try:
  138.             copystat(src, dst)
  139.         except OSError:
  140.             None<EXCEPTION MATCH>(IOError, os.error)
  141.             why = None<EXCEPTION MATCH>(IOError, os.error)
  142.             if WindowsError is not None and isinstance(why, WindowsError):
  143.                 pass
  144.             else:
  145.                 errors.extend((src, dst, str(why)))
  146.         except:
  147.             isinstance(why, WindowsError)
  148.  
  149.         if errors:
  150.             raise Error, errors
  151.         
  152.  
  153.  
  154. def rmtree(path, ignore_errors = False, onerror = None):
  155.     if ignore_errors:
  156.         
  157.         def onerror(*args):
  158.             pass
  159.  
  160.     elif onerror is None:
  161.         
  162.         def onerror(*args):
  163.             raise 
  164.  
  165.     
  166.     names = []
  167.     
  168.     try:
  169.         names = os.listdir(path)
  170.     except os.error:
  171.         err = None
  172.         onerror(os.listdir, path, sys.exc_info())
  173.  
  174.     for name in names:
  175.         fullname = os.path.join(path, name)
  176.         
  177.         try:
  178.             mode = os.lstat(fullname).st_mode
  179.         except os.error:
  180.             mode = 0
  181.  
  182.         if stat.S_ISDIR(mode):
  183.             rmtree(fullname, ignore_errors, onerror)
  184.             continue
  185.         
  186.         try:
  187.             os.remove(fullname)
  188.         continue
  189.         except os.error:
  190.             err = None
  191.             onerror(os.remove, fullname, sys.exc_info())
  192.             continue
  193.         
  194.  
  195.     
  196.     
  197.     try:
  198.         os.rmdir(path)
  199.     except os.error:
  200.         None<EXCEPTION MATCH>os.error
  201.         None<EXCEPTION MATCH>os.error
  202.         onerror(os.rmdir, path, sys.exc_info())
  203.     except:
  204.         None<EXCEPTION MATCH>os.error
  205.  
  206.  
  207.  
  208. def move(src, dst):
  209.     
  210.     try:
  211.         os.rename(src, dst)
  212.     except OSError:
  213.         if os.path.isdir(src):
  214.             if destinsrc(src, dst):
  215.                 raise Error, "Cannot move a directory '%s' into itself '%s'." % (src, dst)
  216.             
  217.             copytree(src, dst, symlinks = True)
  218.             rmtree(src)
  219.         else:
  220.             copy2(src, dst)
  221.             os.unlink(src)
  222.     except:
  223.         os.path.isdir(src)
  224.  
  225.  
  226.  
  227. def destinsrc(src, dst):
  228.     return abspath(dst).startswith(abspath(src))
  229.  
  230.